#ifndef GAME_H
#define GAME_H

#include <iostream>
#include <list>

#include "Level.h"
#include "Renderer.h"
#include "LivingEntity.h"
#include "FactoryEntity.h"
#include "StaticData.h"
#include "HUD.h"
#include "PlayerEntity.h"

class Game
{
public:
    Game();
    void launch();
    void loop();
    void keyboard();
    void tick();
    void render();

    void spawn(std::string, float, float);
    void spawn(std::string);

protected:
    bool isRunning;
    sf::RenderWindow* window;
    sf::Clock clock;
    Renderer* renderer;
    Level level;
    bool keys[sf::Keyboard::KeyCount];

    std::list<Entity*> entities;
    FactoryEntity factory;
    PlayerEntity* player;

    HUD hud;
};

#endif
